package com.example.makerspace.service;

import com.alibaba.fastjson.JSONObject;
import com.example.makerspace.dto.*;

import javax.servlet.http.HttpServletRequest;
import java.util.Map;

/**
 * @author River
 * @version 1.0
 * @date 2023/10/7 17:02
 * @description:
 */
public interface AdminService {
    PageResult userList(PageRequest pageRequest);
    PageResult applicationFormList(PageRequest pageRequest);
    Result editDemand(DemandDTO demandDTO);
    Result editTechnic(TechnicDTO technicDTO);
    Result editCompany(CompanyDTO companyDTO);
    Result editUser(UserDTO userDTO, HttpServletRequest request);
    Result editApplication(ApplicationDTO applicationDTO);
    PageResult demandList(PageRequest pageRequest);
    PageResult technicList(PageRequest pageRequest);
    PageResult companyList(PageRequest pageRequest);

    Result editBook(BookDTO bookDTO);
    Result editBookChapter(BookChapterDTO bookChapterDTO);
    Result bookDetail(BookChapterDTO bookChapterDTO);

    Result editCourse(CourseDTO courseDTO);

    Result editExam(ExamDTO examDTO);

    PageResult bookList(PageRequest pageRequest);

    PageResult courseList(PageRequest pageRequest);

    PageResult examList(PageRequest pageRequest);

    Result editNews(NewsDTO newsDTO);

    PageResult newList(PageRequest pageRequest);

    Result editContactInfo(ContactInfoDTO contactInfoDTO);
    PageResult contactInfoList(PageRequest pageRequest);

    Result editCategory(CategoryDTO categoryDTO);

    Result categoryList(PageRequest pageRequest);

    Result deleteAttachment(ApplicationDTO applicationDTO);

    Result editCourseVideo(CourseVideoDTO courseVideoDTO);

    Result courseDetail(CourseVideoDTO courseVideoDTO);

    JSONObject upload(ResourceDTO resourceDTO);

    Result editExamQuestion(ExamQuestionDTO examQuestionDTO);

    Result examDetail(ExamQuestionDTO examQuestionDTO);

    Result distinctValues(Map<String, Object> params);

    Result select(PageRequest pageRequest);

    Result edit(Map<String, Object> params);

    PageResult list(PageRequest pageRequest);

    Result addApplication(ApplicationV2DTO applicationV2DTO);

    Result updateApplication(ApplicationV2DTO applicationV2DTO);

    Result deleteApplication(Integer id,String username,Integer competitionId);

    Result listDemand(PageRequest pageRequest);

    Result deleteUser(UserDTO userDTO);

    Result deleteByCompetitionId(ApplicationV2DTO applicationV2DTO);

    Result listUser(PageRequest pageRequest);

    Result showAuthentication(String username);

    Result showUserList(PageRequest pageRequest);

    Result editUserList(UserDTO userDTO);

    Result resetPassword(UserDTO userDTO);

    Result onlineUser(PageRequest pageRequest);

    Result addUser(UserDTO userDTO);

    Result updateUserState(UserDTO userDTO);

    Result assignPermissions(UserDTO userDTO);

    Result userRegistration();



    Result entRealName();

    Result questionsRegistration();

    Result showProducts();



    Result pointSort();

    Result showTableData();

    Result otherShow();

    Result forcedOffline(UserDTO userDTO);

    Result listProducts(PageRequest pageRequest);

    Result updateProducts(DemandDTO demandDTO);

    Result showUserOperate(PageRequest pageRequest);

    Result detailProduct(Integer id, Integer type);

    Result deleteProducts(Integer id);

    Result personalName(PageRequest pageRequest);

    Result entAuthentication(PageRequest pageRequest);

    Result newBulletin(PageRequest pageRequest);

    Result addBulletin(NewsDTO newsDTO);

    Result updateNewBulletin(NewsDTO newsDTO);

    Result deleteNewBulletin(String id);

    Result entDetail(String name);

    Result submission(PageRequest pageRequest);

    Result entData(PageRequest pageRequest);

    Result showProductHistory(Integer  productId);
}
